This disclosure relates to implementing standby services in a grid environment and, more specifically, to techniques for implementing a usage aware standby service with multidimensional scheduling in a grid environment.
Multi-dimensional scheduling refers to scheduling that offers improved resource utilization by increasing granularity in resource allocations for applications with varying resource requirements. In general, multi-dimensional scheduling facilitates multi-dimensional resource allocations, where each allocation request may specify a different amount of physical resources (e.g., central processing units (CPUs), processor cores, memory, and disks). In the context of software architecture, the term service refers to a software function or a set of software functions (e.g., that perform mathematical operations, retrieve specified information, or execute a set of operations) that may be reused and includes information or policies for using the service (e.g., based on the identity of a client requesting the service).
In a grid environment, applications typically share a group of resources according to an implemented resource sharing plan. In a typical grid environment, a resource manager allocates resources to an application when the application has demand and an implemented resource sharing plan entitles the application to the resources. A typical resource manager balances resources among applications when multiple applications are competing for the resources. Balancing resources may, for example, include reclaiming one or more resources from an application or moving one or more resources from one application to another application. Conventionally, resource balancing has involved stopping one or more services that were utilizing one or more resources and then starting one or more new services on the one or more resources. In cases where a service can be shared by different applications or reused by a single application and the initialization of the service is expensive, stopping the service may not be desirable.
Software systems with standby service features, that allow an application to release one or more resources while placing an associated service that was utilizing the resources in a standby mode, are known. In those known software systems, placing a service in standby mode facilitates reducing overhead associated with restarting the service (e.g., loading the service into memory) when an application that is allocated one or more resources reuses the service. In the event that an application cannot reuse a service that is in standby mode, a resource manager has to choose whether to leave the service in standby mode or to stop the service. If a resource manager leaves a service in standby mode, the service can potentially be reused when an application that originally used the service (or another application that requires the service) executes. However, leaving a service in standby mode may overload a machine (e.g., a machine may run out of available memory), especially when multiple services are placed in standby mode. On the other hand, if a service is stopped a service reuse level is reduced and overhead associated with restarting the service is increased.